* {
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

html,
body {
    display: grid;
    height: 100%;
    place-items: center;
    background: #e8e8e8;
}

@keyframes blinkCursor {
    50% {
        border-right-color: transparent;
    }
}

@keyframes typeAndDelete {

    0%,
    10% {
        width: 0;
    }

    45%,
    55% {
        width: 10em;
    }

    /* adjust width based on content */
    90%,
    100% {
        width: 0;
    }
}

.terminal-loader {
    border: 0.1em solid #333;
    background-color: #1a1a1a;
    color: #0f0;
    font-family: "Courier New", Courier, monospace;
    font-size: 1em;
    padding: 1.5em 1em;
    width: 12em;
    margin: 100px auto;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
    border-radius: 4px;
    position: relative;
    overflow: hidden;
    box-sizing: border-box;
}

.terminal-header {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1.5em;
    background-color: #333;
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    padding: 0 0.4em;
    box-sizing: border-box;
}

.terminal-controls {
    float: right;
}

.control {
    display: inline-block;
    width: 0.6em;
    height: 0.6em;
    margin-left: 0.4em;
    border-radius: 50%;
    background-color: #777;
}

.control.close {
    background-color: #e33;
}

.control.minimize {
    background-color: #ee0;
}

.control.maximize {
    background-color: #0b0;
}

.terminal-title {
    float: left;
    line-height: 1.5em;
    color: #eee;
}

.text {
    display: inline-block;
    white-space: nowrap;
    overflow: hidden;
    border-right: 0.2em solid green;
    /* Cursor */
    animation: typeAndDelete 4s steps(11) infinite,
        blinkCursor 0.5s step-end infinite alternate;
    margin-top: 1.5em;
}